import request from "@/utils/request";
import { Message } from 'element-ui'

/**
 * @description 上传图片接口
 * @param {Object} data
 */
export function upload (data = {}) {
  // 接口请求
  return request({
    url: 'upload/upload',
    method: 'post',
    headers: {
      'Content-Type': 'multipart/form-data'
    },
    data
  })
}
/**
 * @description 图片上传调用
 * @param {Object} data
 */
export function uploadFilePromise (file) {
  return new Promise((resolve, reject) => {
    const isJPG = file.raw.type === 'image/jpeg'
    const isPNG = file.raw.type === 'image/png'
    const isLt2M = file.raw.size / 1024 / 1024 < 2
    if (!isLt2M) {
      Message({
        message: '上传图片大小超过2M可能影响图片加载时间',
        type: 'warning',
        duration: 5000
      })
      // return false
    }
    if (file.raw) {
      if (isJPG || isPNG) {
        const fileFormData = new FormData()
        fileFormData.append('image', file.raw)
        // 调用上传接口
        upload(fileFormData).then(res => {
          if (res) {
            // 接口调用成功后赋值src
            resolve(res)
            Message({
              message: '上传成功！',
              type: 'success'
            })
          }
        }).catch(err => {
          reject(err)
        })
      } else {
        Message({
          message: '上传图片只能是 JPG或PNG 格式!',
          type: 'error'
        })
      }
    }
  })
}

/**
 * @description 拍照图片图片上传调用
 * @param {Object} data
 */
export function uploadCameraFilePromise (file) {
  return new Promise((resolve, reject) => {
    const isJPG = file.type === 'image/jpeg'
    const isPNG = file.type === 'image/png'
    const isLt4M = file.size / 1024 / 1024 < 4
    if (!isLt4M) {
      Message({
        message: '上传图片大小不能超过 4MB!',
        type: 'error'
      })
      return false
    }
    if (file) {
      if (isJPG || isPNG) {
        const fileFormData = new FormData()
        fileFormData.append('image', file, 'file_' + Date.parse(new Date()) + '.jpeg')
         // fileFormData.append('file', file, 'file_' + Date.parse(new Date()) + '.jpeg')
         // fileFormData.append('method', 'profile')
        // 调用上传接口
        upload(fileFormData).then(res => {
          if (res) {
            // 接口调用成功后赋值src
            resolve(res)
            Message({
              message: '上传成功！',
              type: 'success'
            })
          }
        }).catch(err => {
          reject(err)
        })
      } else {
        Message({
          message: '上传图片只能是 JPG或PNG 格式!',
          type: 'error'
        })
      }
    }
  })
}
/**
 * @description 拍照视频上传调用
 * @param {Object} data
 */
export function uploadVideoFilePromise (file) {
  return new Promise((resolve, reject) => {
    const isLt10M = file.size / 1024 / 1024 < 10
    if (!isLt10M) {
      Message({
        message: '上传视频大小不能超过 10MB!',
        type: 'error'
      })
      return false
    }
    if (['video/mp4', 'video/ogg', 'video/flv', 'video/avi', 'video/wmv', 'video/rmvb'].indexOf(file.raw.type) === -1) {
      Message({
        message: '上传视频只能是 mp4、ogg、flv、avi、wmv、rmvb 格式',
        type: 'error'
      })
      return false
    }
    if (file) {
      const fileFormData = new FormData()
      fileFormData.append('image', file.raw, file.raw.name)
      // 调用上传接口
      upload(fileFormData).then(res => {
        if (res) {
          // 接口调用成功后赋值src
          resolve(res)
          Message({
            message: '上传成功！',
            type: 'success'
          })
        }
      }).catch(err => {
        reject(err)
      })
    }
  })
}
/**
 * @description 大数据视频上传调用
 * @param {Object} data
 */
export function uploadBigVideoFilePromise (file) {
  return new Promise((resolve, reject) => {
    if (['video/mp4', 'video/ogg', 'video/flv', 'video/avi', 'video/wmv', 'video/rmvb'].indexOf(file.raw.type) === -1) {
      Message({
        message: '请上传正确的视频格式',
        type: 'error'
      })
      return false
    }
    if (file) {
      const fileFormData = new FormData()
      fileFormData.append('image', file.raw, file.raw.name)
      // 调用上传接口
      upload(fileFormData).then(res => {
        if (res) {
          // 接口调用成功后赋值src
          resolve(res)
          Message({
            message: '上传成功！',
            type: 'success'
          })
        }
      }).catch(err => {
        reject(err)
      })
    }
  })
}
/**
 * @description 文件上传调用
 * @param {Object} data
 */
export function uploadFileDocxPromise (file) {
  return new Promise((resolve, reject) => {
    if (file.raw) {
      const fileFormData = new FormData()
      fileFormData.append('image', file.raw)
      // 调用上传接口
      upload(fileFormData).then(res => {
        if (res) {
          // 接口调用成功后赋值src
          resolve(res)
          Message({
            message: '上传成功！',
            type: 'success'
          })
        }
      }).catch(err => {
        reject(err)
      })
    }
  })
}
/**
 * @description 删除对应图片
 * @param {Object} data
 */
export function uploadDelete (data = {}) {
  // 接口请求
  return request({
    url: 'upload/delete',
    method: 'post',
    data,
    isJSON: false
  })
}
